#!/bin/bash

# =============================================================================
# Fedora Workstation 42 自动化配置脚本
# 功能：系统更新、Flatpak 配置、GNOME 扩展安装、主题美化等
# cd ~/下载 && git clone https://gitee.com/lcqh2635/init-fedora.git && cd init-fedora
# 使用方法：chmod +x fedora-morror.sh && ./fedora-morror.sh
# 注意：请在全新安装的 Fedora 系统上运行
# 脚本存放位置：阿里网盘网页版 https://www.aliyundrive.com
# =============================================================================

# 设置颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

# 打印彩色信息函数
print_info() {
    echo -e "${BLUE}[INFO]${NC} $1"
}

print_success() {
    echo -e "${GREEN}[SUCCESS]${NC} $1"
}

print_warning() {
    echo -e "${YELLOW}[WARNING]${NC} $1"
}

print_error() {
    echo -e "${RED}[ERROR]${NC} $1"
}

# 检查是否以 root 权限运行（部分操作需要）
check_root() {
    if [ "$EUID" -eq 0 ]; then
        print_error "请不要以 root 用户运行此脚本！"
        print_info "脚本会自动使用 sudo 执行需要管理员权限的操作。"
        exit 1
    fi
}

# 配置 Flatpak 加速镜像
configure_flatpak() {
    print_info "正在配置 Flatpak 加速镜像..."
    
    # 添加 Flathub 仓库（如果尚未添加）
    if ! flatpak remote-list | grep -q flathub; then
        flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
        print_success "已添加 Flathub 仓库"
    else
        print_info "Flathub 仓库已存在"
    fi
    
    # 配置国内镜像源（加速 Flatpak 下载）
    print_info "正在配置 Flatpak 国内镜像源..."
    
    # 备份原始配置
    if [ -f ~/.local/share/flatpak/repo/config ]; then
        cp ~/.local/share/flatpak/repo/config ~/.local/share/flatpak/repo/config.bak
    fi
    
    # 设置镜像源
    sudo flatpak remote-modify flathub --url=https://mirrors.ustc.edu.cn/flathub
    
    if [ $? -eq 0 ]; then
        print_success "Flatpak 镜像源配置完成！"
    else
        print_warning "Flatpak 镜像源配置失败，将使用默认源"
    fi
}

# 配置 Fedora DNF 使用国内镜像源（加速软件包下载）
configure_fedora_dnf_mirror() {
    print_info "正在配置 Fedora DNF 国内镜像源..."

    # 定义镜像源（使用清华大学镜像）
    # 其他可选镜像：
    #   阿里云: https://mirrors.aliyun.com/fedora
    #   中科大: https://mirrors.ustc.edu.cn/fedora
    #   华为云: https://mirrors.huaweicloud.com/fedora
    fedora_morror_url="https://mirrors.ustc.edu.cn/fedora"
    rpmfusion_morror_url="https://mirrors.ustc.edu.cn/rpmfusion"

    # 备份原始仓库配置（仅备份一次）并替换 fedora.repo 中的 baseurl
    sudo sed -e 's|^metalink=|#metalink=|g' \
         -e 's|^#baseurl=http://download.example/pub/fedora/linux|baseurl=${fedora_morror_url}|g' \
         -i.bak \
         /etc/yum.repos.d/fedora.repo \
         /etc/yum.repos.d/fedora-updates.repo
    # ls /etc/yum.repos.d
    # cat /etc/yum.repos.d/fedora.repo
    # cat /etc/yum.repos.d/fedora-updates.repo
    # 修改还原
    # sudo mv /etc/yum.repos.d/fedora.repo.bak /etc/yum.repos.d/fedora.repo
    # sudo mv /etc/yum.repos.d/fedora-updates.repo.bak /etc/yum.repos.d/fedora-updates.repo

    # 替换 fedora-updates.repo
    # 中国科技大学 RPMFusion 镜像源 	https://mirrors.ustc.edu.cn/help/rpmfusion.html
    # 使用下列命令（在 bash 或兼容 shell 中），可以同时启用其 free 和 nonfree 软件源
    sudo dnf install -y ${rpmfusion_morror_url}/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
    sudo dnf install -y ${rpmfusion_morror_url}/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
    # 替换源地址
    sudo sed -e 's|^metalink=|#metalink=|g' \
         -e 's|^#baseurl=http://download1.rpmfusion.org|baseurl=${rpmfusion_morror_url}|g' \
         -i.bak \
         /etc/yum.repos.d/rpmfusion*.repo
    # ls /etc/yum.repos.d
    # cat /etc/yum.repos.d/rpmfusion-free.repo
    # cat /etc/yum.repos.d/rpmfusion-free-updates.repo
    # 修改还原
    # sudo mv /etc/yum.repos.d/rpmfusion-free.repo.bak /etc/yum.repos.d/rpmfusion-free.repo
    # sudo mv /etc/yum.repos.d/rpmfusion-free-updates.repo.bak /etc/yum.repos.d/rpmfusion-free-updates.repo
    # sudo mv /etc/yum.repos.d/rpmfusion-nonfree.repo.bak /etc/yum.repos.d/rpmfusion-nonfree.repo
    # sudo mv /etc/yum.repos.d/rpmfusion-nonfree-updates.repo.bak /etc/yum.repos.d/rpmfusion-nonfree-updates.repo
    # sudo mv /etc/yum.repos.d/rpmfusion-nonfree-nvidia-driver.repo.bak /etc/yum.repos.d/rpmfusion-nonfree-nvidia-driver.repo
    # sudo mv /etc/yum.repos.d/rpmfusion-free-updates-testing.repo.bak /etc/yum.repos.d/rpmfusion-free-updates-testing.repo
    # sudo mv /etc/yum.repos.d/rpmfusion-nonfree-steam.repo.bak /etc/yum.repos.d/rpmfusion-nonfree-steam.repo
    # sudo mv /etc/yum.repos.d/rpmfusion-nonfree-updates-testing.repo.bak /etc/yum.repos.d/rpmfusion-nonfree-updates-testing.repo

    # 清理并生成新缓存
    print_info "正在清理 DNF 缓存并生成新元数据..."
    sudo dnf clean all
    sudo dnf makecache

    if [ $? -eq 0 ]; then
        print_success "Fedora DNF 国内镜像源配置成功！"
    else
        print_warning "DNF 镜像源配置可能存在问题，请检查网络或手动验证仓库。"
    fi
}

# 更新系统
update_system() {
    print_info "正在更新系统软件包..."
    sudo dnf upgrade -y
    if [ $? -eq 0 ]; then
        print_success "系统更新完成！"
    else
        print_error "系统更新失败！"
    fi
}

# 主函数
main() {
    print_info "开始 Fedora Workstation 42 自动化配置..."
    
    # 检查权限
    check_root
    
    # 执行配置步骤
    configure_flatpak
    configure_fedora_dnf_mirror
    update_system
    
    print_success "=========================================="
    print_success "Fedora 配置完成！"
    print_success "建议重启系统以应用所有更改。"
    print_success "=========================================="
}

# 执行主函数
main "$@"


# 将上述代码保存为 `fedora-install-gnome-extensions.sh`
# 赋予执行权限 chmod +x fedora-install-gnome-extensions.sh
# 运行脚本 ./fedora-install-gnome-extensions.sh


